import os
import openpyxl
from openpyxl.styles import Font,Alignment
from openpyxl import Workbook,load_workbook

# 需要安装openpyxl插件
# pip install openpyxl
# 出现下面错误：
# Requirement already satisfied: openpyxl in /opt/anaconda3/lib/python3.9/site-packages (3.0.10)
# 解决方式下面脚本：
# pip install --target=/opt/anaconda3/lib/python3.9/site-packages openpyxl


#----------------------------------------------------------#
#--------------------------代码开始--------------------------#
# 定义data暂存数据
data = []


#遍历文件夹中的所有文件，这里路径修改为各自系统的路径，windows是反斜线方式：Desktop\merge
for i in os.listdir(r'/python表格合并'):
    #判断文件名是否以'.xlsx'结尾
    if i.endswith('.xlsx'):
        #读取文件路径，这里路径修改为各自系统的路径，windows是反斜线方式：Desktop\merge
        wb = load_workbook(r'/python表格合并/'+i)
        info = wb['Sheet1']
        #获取行数
        rows = info.max_row
        #按照行数循环读取数据（减去两行标题）
        for row in range(rows-2):
            # 按行读取每个字段中的值
            A = info.cell(3+row,1).value
            B = info.cell(3+row,2).value
            C = info.cell(3+row,3).value
            D = info.cell(3+row,4).value
            E = info.cell(3+row,5).value
            F = info.cell(3+row,6).value
            #判断是否整行都是空值
            if A and B and C and D and E and F != None:
                # 将读取的值以列表形式保存
                list = [A,B,C,D,E,F]
                # 将列表list写入data中
                data.append(list)
            else:
                continue
    else: 
        continue



#新建excel
wb = Workbook()
#新建sheet表
sheet = wb.active

#merge_cells()函数合并单元格
sheet.merge_cells('A1:F1')
#确定写入位置
title = sheet.cell(1,1)
#确定写入内容
title.value = '销售订单信息登记表'
#字体为粗体的设置
font = Font(bold=True)
#字体位置水平居中、垂直居中的设置
alignment = Alignment(horizontal='center',vertical='center')

#将变量title变为粗体
title.font = font
#将变量title水平、垂直居中
title.alignment = alignment
#excel表头字段列表
list = ['订单编号','商品名称','单位','订单总额','订单状态','发货状态']
for i in range(len(list)):
    #通过循环将表头字段写入excel
    sheet.cell(2,i+1).value = list[i]
    #通过循环将字体加粗
    sheet.cell(2,i+1).font = font
    #通过循环将内容居中
    sheet.cell(2,i+1).alignment = alignment

#按照data中的列表数量循环
for row in range(len(data)):
    #将data中的数据写入之前新建的sheet表
    sheet.append(data[row])

#保存excel表，表名和位置自定义。
wb.save('total.xlsx')


#--------------------------代码结束--------------------------#
#----------------------------------------------------------#
